package org.wang.generalcode.modules.gen.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.wang.generalcode.modules.gen.config.GenDataSourceConfig;
import org.wang.generalcode.modules.gen.mapper.DataSourceMapper;
import org.wang.generalcode.modules.gen.pojo.entity.GenDataSource;
import org.wang.generalcode.modules.gen.pojo.enums.DbType;
import org.wang.generalcode.modules.gen.service.DataSourceService;

import javax.sql.DataSource;
import java.sql.SQLException;

@Service
public class DataSourceServiceImpl extends ServiceImpl<DataSourceMapper, GenDataSource> implements DataSourceService {

    @Resource
    private DataSource dataSource;

    @Override
    public String getDatabaseProductName(Long dataSourceId) {
        if (dataSourceId.intValue() == 0) {
            return DbType.MySQL.name();
        } else {
            return getById(dataSourceId).getDbType();
        }
    }

    @Override
    public GenDataSourceConfig get(Long datasourceId) {
        // 初始化配置信息
        GenDataSourceConfig info = null;
        if (datasourceId.intValue() == 0) {
            try {
                info = new GenDataSourceConfig(dataSource.getConnection());
            } catch (SQLException e) {
                log.error(e.getMessage(), e);
            }
        } else {
            info = new GenDataSourceConfig(this.getById(datasourceId));
        }

        return info;
    }

}
